package com.lyf.scm.common.enums;

import java.util.HashMap;
import java.util.Map;

import com.lyf.scm.common.constants.CommonConstants;

import java.util.ArrayList;
import java.util.List;

/**
 * description:其他渠道销售计划类型对应枚举（高级搜索）
 *
 * @author: huangtao
 * @data: 2020/8/17
 */
public enum SalesOtherTypeEnum {

    /**
     * 直营门店营销计划
     */
    PLAN_ONE("1", "营销计划(直营)"),
    /**
     * 加盟门店营销计划
     */
    PLAN_TWO("2", "营销计划(加盟)"),
    /**
     * 云商营销计划
     */
    PLAN_THREE("3", "营销计划(云商)"),
    /**
     * APP营销计划
     */
    PLAN_FOUR("4", "营销计划(APP)"),
    /**
     * 新开店计划（加盟）
     */
    PLAN_FIVE("5", "新开店计划(加盟)"),
    /**
     * 新开店计划（直营）
     */
    PLAN_SIX("6", "新开店计划(直营)"),
    /**
     * 新品铺货计划（直营）
     */
    PLAN_SEVEN("7", "新品铺货计划(直营)"),
    /**
     * 新品铺货计划（云商）
     */
    PLAN_EIGHT("8", "新品铺货计划(云商)"),
    /**
     * 新品铺货计划（APP）
     */
    PLAN_NINE("9", "新品铺货计划(APP)"),
    /**
     * 新品铺货计划（经销商中心)
     */
    PLAN_TEN("10", "新品铺货计划(经销中心)"),
    /**
     * 加盟销售计划
     */
    PLAN_ELEVEN("11", "销售计划(加盟)"),
    /**
     * APP销售计划
     */
    PLAN_TWELVE("12", "销售计划(APP)"),
    /**
     * 经销中心销售计划
     */
    PLAN_THIRTEEN("13", "销售计划(经销中心)"),
    /**
     * 新品铺货计划（云商）
     */
    PLAN_FOURTEEN("14", "销售计划(云商)"),

    /**
     * 新品铺货计划（加盟）
     */
    PLAN_FIFTEEN("15", "新品铺货计划(加盟)"),

    /**
     * 销售计划(直营)
     */
    PLAN_SIXTEEN("16", "销售计划(直营)"),

    /**
     * 直营预测计划
     */
    PLAN_DIRECTLY("17", "直营预测计划");

    private String type;
    private String desc;

    SalesOtherTypeEnum(String type, String desc) {
        this.type = type;
        this.desc = desc;
    }

    /**
     * 通过计划类型获取计划名称
     *
     * @param type
     * @return {@link String}
     **/
    public static String getNameByType(String type) {
        for (SalesOtherTypeEnum salesOtherTypeEnum : SalesOtherTypeEnum.values()) {
            if (salesOtherTypeEnum.getType().equals(type)) {
                return salesOtherTypeEnum.getDesc();
            }
        }
        return "";
    }

    /**
     * 获取所有计划类型
     *
     * @param
     * @return {@link Map<String>}
     **/
    public static Map<String, String> getAllPlans() {
        Map<String, String> map = new HashMap<>();
        for (SalesOtherTypeEnum salesOtherTypeEnum : SalesOtherTypeEnum.values()) {
            map.put(salesOtherTypeEnum.getType(), salesOtherTypeEnum.getDesc());
        }
        return map;
    }

    /**
     * 通过类型返回对应的CODE集合
     *
     * @param type
     * @return
     */
    public static List<String> getCodeListByType(Integer type) {
        List<String> codes = new ArrayList<>();
        for (SalesOtherTypeEnum item : SalesOtherTypeEnum.values()) {
            if (CommonConstants.ONE.equals(type)) {
                if ("直营预测计划".equals(item.getDesc())) {
                    continue;
                }
            }
            codes.add(item.getType());
        }
        return codes;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}
